Welcome to pandas!

7.5 分组之时间戳的分组

如果分组的数据时时间戳,同时也希望按指定的时间戳频率做分组,需要使用到pd.Grouper()函数配合, 该是专门用来生成分组依据的工具,可以按索引,按列,按计算结果,时序中的频率等内容为依据进行分组。结构如下:

import pandas as pd

df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.7.05 分组之时间戳的分组.xlsx" )

print (df)

for t ,d in df.groupby(by=pd.Grouper( key = "日期" , freq = "QS" )):

# for t ,d in df.groupby(by=df.日期.dt.month):

print (t)

print (d)

print ("-----------------------------")

返回:

日期 产品 购买金额
0 2023-03-30 08:00:00 93300.0 100
1 2023-05-27 08:00:00 93300.0 100
2 2023-11-30 08:00:00 93300.0 100
.. ... ... ...
597 2023-06-02 09:10:41 12027024.0 100
598 NaT 12027026.0 10

[599 rows x 3 columns]

2023/1/1


日期 产品 购买金额
28 2023-01-04 08:00:00 11153001.0 100
29 2023-01-04 08:00:00 11153001.0 100
146 2023-01-06 14:10:55 11403001.0 100
.. ... ... ...
547 2023-03-23 08:00:00 12027020.0 100
0 2023-03-30 08:00:00 93300.0 100
223 2023-03-30 11:08:22 11603002.0 0

[92 rows x 3 columns]

-----------------------------

2023/4/1


日期 产品 购买金额
225 2023-04-11 12:59:02 11603002.0 100
80 2023-04-13 11:06:42 11213001.0 100
356 2023-04-16 10:22:40 12023075.0 0
.. ... ... ...
333 2023-06-27 08:00:00 12023025.0 100
140 2023-06-28 10:36:21 11363001.0 100

[224 rows x 3 columns]

-----------------------------

2023/7/1


日期 产品 购买金额
381 2023-07-07 17:14:05 12027004.0 100
336 2023-07-10 19:47:54 12023025.0 10
337 2023-07-10 19:47:54 12023025.0 10
.. ... ... ...
232 2023-09-26 17:32:06 11603006.0 100
382 2023-09-27 10:48:52 12027004.0 1

[87 rows x 3 columns]

-----------------------------

2023/10/1


日期 产品 购买金额
236 2023-10-08 16:57:29 11613002.0 100
108 2023-10-10 13:58:56 11273012.0 100
455 2023-10-12 10:34:45 12027011.0 100
456 2023-10-12 10:34:45 12027011.0 100
563 2023-10-12 10:36:43 12027021.0 100
.. ... ... ...
573 2023-12-30 11:25:23 12027021.0 70
468 2023-12-30 11:25:24 12027011.0 10
469 2023-12-30 11:25:24 12027011.0 90
574 2023-12-30 11:25:24 12027021.0 10
575 2023-12-30 11:25:24 12027021.0 90

[195 rows x 3 columns]

-----------------------------